/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Pruebas;

import Controlador.Controlador;
import Controlador.UsuariosDisponibles;
import Definiciones.Definiciones;

import GestorFarmacia.*;
import GestorCitas.*;
import GestorUsuarios.*;
import GestorClinico.*;
import java.security.NoSuchAlgorithmException;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.sql.*;

import Servicios.Conexion;
import java.io.*;
import java.util.Calendar;
import java.lang.reflect.Field;

import GestorPruebas.*;
import java.lang.reflect.Field;

/**
 *
 * @author ñiko
 */
public class PruebasAntonio {
    public static void main (String[] args) throws ParseException, IOException, ClassNotFoundException, SQLException, IDException, NoSuchAlgorithmException {

        //datos
        
        /*fecha = Calendar.getInstance().getTime();
        String path = "/Users/antonio/Pictures/fondos/2dgml8p.jpg" , nombre = "miImagen.jpg";
        String tabla = "Imagen";
        String consulta;

        //Subir una imagen
        Conexion.conectar();
        System.out.println("Conectado y subiendo...");
        consulta = "INSERT INTO " + tabla + "(nombre,imagen,fecha) VALUES(\'"+ nombre + "\',?,\'"+ formato_fecha.format(fecha)+"\')";
        try {
            Conexion.subirImagen(consulta,path);
        } catch (SQLException ex) {
               System.out.println("Fallo SQL:" + ex.getMessage());
        }

        System.out.println("Imagen subida");

        //Obtener su id
        consulta = "WHERE nombre = \'" + nombre + "\' AND \'"+ formato_fecha.format(fecha)+"\';";
        ResultSet datos = Conexion.consultar("SELECT * FROM Imagen " + consulta );
        Integer id = null ;
	while(datos.next()) {
		id = datos.getInt("id") ;
	}
        System.out.println("El id es:"+id.toString());

        Conexion.desconectar();
        System.out.println("Desconectado");


        //Descarga de una imagen subida
        System.out.println("Guardamos la imagen");
        save(id , "/Users/antonio/Desktop/");
        System.out.println("Fin proceso");*/

        DateFormat formato_fecha = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //Date fecha = formato_fecha.parse("2011-06-10");
        
        /*Prueba p = new Prueba(EstadoPrueba.Pendiente,Calendar.getInstance().getTime(),null,TipoPrueba.HematologiaGeneral,1,2,3,4);
        
        try {
            Prueba.add(p);
        }catch ( SQLException e){
            System.out.println("Fallo SQL:" + e.getMessage());
        }
        System.out.println("ID:"+p.getIdPrueba());*/
        
        Prueba p = null;
       
        try {
            //h = Prueba.get(null,null,null,null,null,TipoPrueba.Hormonas,null);
            p = Prueba.get(1);
            if ( p != null) {
                System.out.println(p.getEstadoPrueba());
            }else
                System.out.println("vacio");
        }catch ( SQLException e){
            System.out.println("Fallo SQL:" + e.getMessage());
        }

        p.setEstadoPrueba(EstadoPrueba.Visualizable);
        p.setFechaResultados(formato_fecha.parse("2011-05-25 13:30:00"));
        ((Radiografia)p).setTipoRadiografia(TipoRadiografia.II);
        //((Hormonas)p).setTirotropina(8);

        try {
            Prueba.update(p);

            //h = Prueba.get(null,null,null,null,null,TipoPrueba.Hormonas,null);
            p = Prueba.get(1);
            if ( p != null) {
                System.out.println(p.getFechaResultados());
            }else
                System.out.println("vacio");
        }catch ( SQLException e){
            System.out.println("Fallo SQL:" + e.getMessage());
        }
        /*UsuariosDisponibles res[]= null;
        try {
             res = Prueba.getFechasDisponibles(formato_fecha.parse("2011-05-30 8:00:00"), null/*formato_fecha.parse("2011-05-31 1:00:00"));
        }catch ( SQLException e){
            System.out.println("Fallo SQL:" + e.getMessage());
        }

        System.out.println("Aqui");
        if (res!=null)
        for ( UsuariosDisponibles d : res) {
            System.out.println("Fecha:"+formato_fecha.format(d.getFechaInicio()));
            for ( int i : d.getArrayId() )
                System.out.println("\t"+i);
        }*/
        

        /*Hemostasia h = new Hemostasia();
        Field r[] = h.getClass().getDeclaredFields();
        System.out.println(r.length);
        System.out.println(r[0].getName());
        try {
            ValoresPrueba v = Controlador.obtenerValoresPrueba(r[0].getName());
            System.out.println(v.getMaximo());
        } catch (SQLException ex){
            System.out.println(ex.getMessage());

        }*/

        
    }

    public static void save ( Integer id , String path) throws ParseException, IOException, ClassNotFoundException, SQLException, IDException {
        String consulta;
        String nombre;
        Blob bytesImagen ;
        InputStream is ;
        FileOutputStream fw;


        Conexion.conectar();

        consulta = "WHERE id = \'" + id + "\';";

        //Obtenemos la imagen y la guardamos en la ruta especificada
        ResultSet datos = Conexion.consultar("SELECT * FROM Imagen " + consulta );
	while(datos.next()) {
		id = datos.getInt("id") ;
                nombre = datos.getString("nombre");
                bytesImagen = datos.getBlob("imagen");
                is = bytesImagen.getBinaryStream();

                //Guardamos la imagen
                fw = new FileOutputStream(path+nombre);

                byte bytes[] = new byte[1024];
                int leidos = is.read(bytes);
                while (leidos > 0) {
                    fw.write(bytes);
                    leidos = is.read(bytes);
                }
                fw.close();
                is.close();
        }

        Conexion.desconectar();

    }
}